package Day_0226.ProxyPattern;

/**
 * @author zxc
 * @date 2023/02/26 21:21
 **/
public class ProxyPattern {
    public static void main(String[] args) {
        /**
         * 谈一谈对于代理模式的理解
         * ===》
         * 1.什么是代理模式
         * ===》
         * （1）通过代理控制对象的访问，可以在这个对象调用方法之前、调用方法之后去处理/添加新的功能。(也就是AO的P微实现)
         * （2）代理在原有代码乃至原业务流程都不修改的情况下，直接在业务流程中切入新代码，增加新功能，这也和Spring的（面向切面编程）很相似
         *
         * 2.代理模式应用场景
         * ===》
         * Spring AOP、日志打印、异常处理、事务控制、权限控制等
         *
         * 3.代理的分类
         * ===》
         * （1）静态代理(静态定义代理类)
         * （2）动态代理(动态生成代理类，也称为Jdk自带动态代理)
         * （3）Cglib 、javaAssist动态代理（字节码操作库）
         *
         * 4.三种代理的区别
         * ===》
         * 1. 静态代理 ：
         * 简单代理模式，是动态代理的理论基础。常见使用在代理模式
         *
         * 2. jdk动态代理 ：
         * 使用反射完成代理。需要有顶层接口才能使用，常见是mybatis的mapper文件是代理。
         * ===》
         * 即，jdk动态代理，是面向接口的，目标业务类是必须要去继承接口的;
         *
         * 3. cglib动态代理：
         * ===》
         * 也是使用反射完成代理，可以直接代理类（jdk动态代理不行），使用字节码技术，不能对 final类进行继承。（需要导入jar包）
         *
         */
    }
}
